Customizing authentication in {django} {AbstractUser, AbstractBaseUser}


AbstractBaseUser

비밀번호 해싱에 필요한 구현체를 마련해놓고 프로그래머에게 기본 User를 확장할 수 있게 도와준다. 오버라이딩이 필요한 멤버는 다음과 같다.

다만, AbstractBaseUserUserManager라는 유저 생성에 관여하는 매니저 객체를 필요로 한다. 커스텀 User가 단지 필드만 수정한 경우라면 BaseUserManager를 상속하는 것이 유리하다. 오버라이드 할 메서드는 다음과 같다.

AbstractUser

Info

AbstractUser extends AbstractBaseUser with full implementation of the default User as an abstract model.

따라서, AbstractUser는 기본 UserManager또한 구현하고 있다는 것을 알 수 있다.

Custom users and the built-in authentication forms

기본 내장 form과 view는 기본 User를 사용하고 있음을 전제로 깔아뒀기 때문에 만약 User를 커스텀 했다면 form, view 모두 같이 커스텀 해야만 한다. 관련한 문제는 커스텀한 User의 UserCreationForm 재정의하기 {django} 에서 볼 수 있다.